package com.itgaoshu.hospitalproject.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itgaoshu.hospitalproject.bean.DataGridView;
import com.itgaoshu.hospitalproject.bean.Role;
import com.itgaoshu.hospitalproject.bean.RoleMenu;
import com.itgaoshu.hospitalproject.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping("/sysManage")
public class RoleController {
    @Autowired
    private RoleService roleService;

    /**
     * 显示所有角色的方法
     * @param role 角色
     * @param page 页数
     * @param limit 每页显示的信息数
     * @return
     */
    @RequestMapping("selectAllRole")
    @ResponseBody
    public Object selectAllRole(Role role, int page, int limit) {
        PageHelper.startPage(page, limit);
        List<Role> roles = roleService.selectAllRole(role);
        PageInfo pageInfo = new PageInfo(roles);
        Map<String, Object> tableData = new HashMap<String, Object>();
        //这是layui要求返回的json数据格式
        tableData.put("code", 0);
        tableData.put("msg", "");
        //将全部数据的条数作为count传给前台（一共多少条）
        tableData.put("count", pageInfo.getTotal());
        //将分页后的数据返回（每页要显示的数据）
        tableData.put("data", pageInfo.getList());
        return tableData;
    }

    /**
     * 添加角色的方法
     * @param role 角色
     * @return
     */
    @RequestMapping("insertRole")
    @ResponseBody
    public String insertRole(Role role) {
        int result = roleService.insertRole(role);
        if (result > 0) {
            return "添加成功";
        } else {
            return "添加失败";
        }
    }

    /**
     * 修改用户角色的方法
     * @param role 角色
     * @return
     */
    @RequestMapping("updateRole")
    @ResponseBody
    public String updateRole(Role role) {
        int result = roleService.updateRole(role);
        if (result > 0) {
            return "修改成功";
        } else {
            return "修改失败";
        }
    }

    /**
     * 删除角色的方法
     * @param roleid 角色id
     * @return
     */
    @RequestMapping("deleteRole")
    @ResponseBody
    public String deleteRole(int roleid) {
        //通过角色id删除角色
        int result1 = roleService.deleteRoleId(roleid);
        //删除角色与用户的关系
        int result2 = roleService.deleteRoleUserId(roleid);
        //删除角色与菜单的联系
        int result3 = roleService.deleteRoleMenuId(roleid);

        if(result1 > 0 || result2 > 0 || result3 > 0){
            return "删除成功";
        }else{
            return "删除失败";
        }
    }

    /**
     * 加载角色管理分配菜单
     * @param roleid 角色id
     * @return
     */
    @RequestMapping("initRoleMenuTreeJson")
    @ResponseBody
    public DataGridView initRoleMenuTreeJson(int roleid) {
        return roleService.initRoleMenuTreeJson(roleid);
    }

    /**
     * 保存角色和菜单的关系
     * @param roleMenu 角色菜单
     * @return
     */
    @RequestMapping("saveRoleMenu")
    @ResponseBody
    public Object saveRoleMenu(RoleMenu roleMenu){

        roleService.saveRoleMenu(roleMenu);
        return "分配成功";
    }

}
